home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / CHESS.PAK / TIMELIB.CPP < prev    next >
C/C++ Source or Header  |  1997-05-06  |  2KB  |  83 lines

  1. //----------------------------------------------------------------------------
  2. // ObjectWindows - (C) Copyright 1991, 1993 by Borland International
  3. //----------------------------------------------------------------------------
  4. #include <owl/pch.h>
  5. #include <owl/defs.h>
  6. #include <stdio.h>
  7. #include <string.h>
  8. #include <dos.h>
  9. #include "externs.h"
  10. #include "wcdefs.h"
  11. #include "info.h"
  12.  
  13. void
  14. CGetTime(int *hour, int *minute, int *second, int * sec100)
  15. {
  16. #if defined(BI_PLAT_WIN16)
  17.   _AH = 0x2C;
  18.   geninterrupt(0x21);
  19.   *hour = _CH;
  20.   *minute = _CL;
  21.   *second = _DH;
  22.   *sec100 = _DL;
  23. #else
  24.   SYSTEMTIME systime;
  25.   ::GetSystemTime(&systime);
  26.   *hour = systime.wHour;
  27.   *minute = systime.wMinute;
  28.   *second = systime.wSecond;
  29.   *sec100 = systime.wMilliseconds * 10;  
  30. #endif
  31. }
  32.  
  33. void
  34. DisplayTime()
  35. {
  36.   static bool colon = true;
  37.  
  38.   int hour1, min1, sec1, s100;
  39.   double CurTime = ChessTime[RunColor].totaltime;
  40.   CGetTime(&hour1, &min1, &sec1, &s100);
  41.   CurTime += (s100 - ChessTime[RunColor].sec100) * 0.01 +
  42.     (sec1 - ChessTime[RunColor].second) +
  43.     (min1 - ChessTime[RunColor].minute) * 60.0 +
  44.     (hour1 - ChessTime[RunColor].hour) * 3600.0;
  45.   min1 = int(CurTime / 60.);
  46.   sprintf(buf, "%2.2d%c%02d", min1, colon ? ':' : ' ', int(CurTime - min1 * 60.0));
  47.   TInfo->SetTimerText(buf);
  48.   colon = !colon;
  49. }
  50.  
  51. void
  52. InitTime(CLOCKTYPE* clock)
  53. {
  54.   memset(clock, 0, sizeof(CLOCKTYPE));  
  55. }
  56.  
  57. void
  58. StartTime(CLOCKTYPE* clock)
  59. {
  60.   CGetTime(&clock->hour, &clock->minute, &clock->second, &clock->sec100);
  61. }
  62.  
  63. void
  64. StopTime(CLOCKTYPE* clock)
  65. {
  66.   int hour1, min1, sec1, s100;
  67.   CGetTime(&hour1, &min1, &sec1, &s100);
  68.   if (hour1 < clock->hour)
  69.     hour1 += 24;
  70.   clock->totalhours += hour1 - clock->hour;
  71.   clock->totmin += min1 - clock->minute;
  72.   clock->totalsecs += sec1 - clock->second;
  73.   clock->tots100 += s100 - clock->sec100;
  74.   clock->number++;
  75.   clock->totaltime = clock->totaltime + (s100 - clock->sec100) * 0.01 +
  76.     (sec1 - clock->second) + (min1 - clock->minute) * 60.0 +
  77.     (hour1 - clock->hour) * 3600.0;
  78.   clock->hour = hour1;
  79.   clock->minute = min1;
  80.   clock->second = sec1;
  81.   clock->sec100 = s100;
  82. }
  83.